package com.xul.crowd.mapper;

import com.xul.crowd.entity.Auth;
import com.xul.crowd.entity.AuthExample;

import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface AuthMapper {
    int countByExample(AuthExample example);

    int deleteByExample(AuthExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Auth record);

    int insertSelective(Auth record);

    List<Auth> selectByExample(AuthExample example);

    Auth selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Auth record, @Param("example") AuthExample example);

    int updateByExample(@Param("record") Auth record, @Param("example") AuthExample example);

    int updateByPrimaryKeySelective(Auth record);

    int updateByPrimaryKey(Auth record);

    /**
     * 根据中间表用roleId查询出所有的authId
     *
     * @param roleId
     * @return
     */
    List<Integer> selectAssignedAuthIdByRoleId(Integer roleId);

    /**
     * 根据roleId删除旧的关联关系
     *
     * @param roleId
     */
    void deleteOldRelationship(Integer roleId);

    /**
     * 将roleId和authList的关联数据保存到数据库
     *
     * @param roleId
     * @param authList
     */
    void insertNewRelationship(@Param("roleId") Integer roleId, @Param("authList") List<Integer> authList);

    /**
     * 根据中间表用menuId查询出所有的authId
     * @param menuId
     * @return
     */
    List<Integer> selectAssignedAuthIdByMenuId(Integer menuId);

    /**
     * 根据menuId删除旧的关联关系
     * @param menuId
     */
    void deleteOldMenuRelation(Integer menuId);

    /**
     * 将menuId和authIdList的关联数据保存到数据库
     * @param menuId
     * @param authIdList
     */
    void insertNewMenuRelation(@Param("menuId") Integer menuId,@Param("authIdList") List<Integer> authIdList);

    /**
     * 根据adminId查询到AuthName
     * @param adminId
     * @return
     */
    List<String> selectAssignedAuthNameByAminId(Integer adminId);
}